package com.lhkj.ct.meta.admin.validation;

import com.lhkj.ct.base.validator.group.ValGroups;
import com.lhkj.ct.meta.admin.model.entity.TblMenu;
import org.hibernate.validator.spi.group.DefaultGroupSequenceProvider;

import java.util.ArrayList;
import java.util.List;

/**
 * TODO 菜单级联校验
 */
public class MenuGroupSequenceProvider implements DefaultGroupSequenceProvider<TblMenu> {

    @Override
    public List<Class<?>> getValidationGroups(TblMenu menu) {
        List<Class<?>> defaultGroupSequence = new ArrayList<>();
        // warn 这一步不能省,否则Default分组都不会执行，会抛错
        defaultGroupSequence.add(TblMenu.class);
        // 因为前置条件有分组，这里必须添加
        defaultGroupSequence.add(ValGroups.Insert.class);
        defaultGroupSequence.add(ValGroups.Update.class);
        if (menu != null) {
            if (null != menu.getType()) {
                switch (menu.getType()){
                    case CATALOG:
                        // 目录需要path
                        defaultGroupSequence.add(TblMenu.catalog.class);
                        break;
                    case MENU:
                        // 菜单必须有权限标识
                        defaultGroupSequence.add(TblMenu.menu.class);
                        break;
                    case BUTTON:
                        // 按钮必须有权限标识
                        defaultGroupSequence.add(TblMenu.button.class);
                        break;
                    case EXTLINK:
                        // 外链校验path路径是否合法
                        defaultGroupSequence.add(TblMenu.link.class);
                        break;
                }
            }
        }
        return defaultGroupSequence;
    }
}
